package com.play2gether;

import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TabHost;
import android.widget.TextView;

import java.util.Random;

/**
 * Created by Raul on 18/05/14.
 */
public class principalActivity extends ActionBarActivity implements View.OnClickListener{

    private  SharedPreferences  preferencias;
    private  String             id_usuario;
    private  String[]           estado;
    private  DataBaseManager    db;
    private  GridView           gvPosturas;
    //Tab jugar
    private  Button             btImgPostura;
    private  Button             btProbar;
    private  TextView           txtPostura;
    private  int                id_postura;

    private LinearLayout myGallery;

    private ImageView fondo1,fondo2,fondo3,fondo4,fondo5,fondo6,fondo7,fondo8,fondo9,fondo10,fondo11,fondo12;

    private String sesionActiva;



    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        preferencias = getSharedPreferences("sesion", Context.MODE_PRIVATE);
        sesionActiva = new String();
        sesionActiva = preferencias.getString("activa", "");

        //Se comprueba si la sesión está abierta. Si no es así, se carga la pantalla de login.
        if (sesionActiva.equals("0") || sesionActiva=="") {
            Intent intent = new Intent(this, loginActivity.class);
            startActivity(intent);
            finish();
        } else {
            setContentView(R.layout.principal);
            id_usuario = preferencias.getString("id", "");
            estado = utilidades.obtenerEstado(id_usuario, this);
            db = new DataBaseManager(this);
            configurarNavbar();
            configurarTabs();
        }
    }



    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    private void configurarNavbar(){
        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
        actionBar.setCustomView(R.layout.navbar);

        Button btFormularioNV = (Button) findViewById(R.id.btFormularioNV);
        Button btSugerenciaNV = (Button) findViewById(R.id.btSugerenciaNV);
        Button btOpcionesNV   = (Button) findViewById(R.id.btOpcionesNV);
        Button btLogoNV       = (Button) findViewById(R.id.btLogoNV);
        Button btAtras        = (Button) findViewById(R.id.bt_atras);
        Button btSincronizar  = (Button) findViewById(R.id.bt_sincronizar);

        TextView tituloNav = (TextView) findViewById(R.id.tituloLayout);
        tituloNav.setText("Play2gether");

        //Botones para el navbar
        btOpcionesNV.setOnClickListener(this);
        if (!estado[0].equals("2")) {
            btFormularioNV.setAlpha(0);
            btSugerenciaNV.setAlpha(0);
            btSincronizar.setAlpha(0);
        } else {
            btFormularioNV.setOnClickListener(this);
            btSugerenciaNV.setOnClickListener(this);
        }
            //btLogoNV.setOnClickListener(this);
            btAtras.setOnClickListener(this);
            btSincronizar.setOnClickListener(this);
            btAtras.setAlpha(0);
            //btSincronizar.setAlpha(0);
            //btOpcionesNV.setAlpha(0);

        boolean haySugerencias = db.comprobarSugerencias(id_usuario);
        if (haySugerencias){ btSugerenciaNV.setBackground(this.getResources().getDrawable(R.drawable.bt_sugerencias_notificacion)); }
        else { btSugerenciaNV.setBackground(this.getResources().getDrawable(R.drawable.bt_sugerencia_nav)); }

        boolean hayFormularios = db.comprobarFormularios(id_usuario);
        if (hayFormularios){ btFormularioNV.setBackground(this.getResources().getDrawable(R.drawable.bt_formulario_notificacion)); }
        else { btFormularioNV.setBackground(this.getResources().getDrawable(R.drawable.bt_formulario_nav)); }

    }

    private void configurarTabs(){
        Resources res = getResources();

        TabHost tabs = (TabHost) findViewById(android.R.id.tabhost);
        tabs.setup();

        TabHost.TabSpec spec = tabs.newTabSpec("principalTab");
        spec.setContent(R.id.tab1);
        spec.setIndicator("PRINCIPAL", res.getDrawable(android.R.drawable.ic_btn_speak_now));
        tabs.addTab(spec);

        spec = tabs.newTabSpec("playTab");
        spec.setContent(R.id.tab2);
        spec.setIndicator("JUGAR", res.getDrawable(android.R.drawable.ic_btn_speak_now));
        tabs.addTab(spec);

        spec = tabs.newTabSpec("kamasutraTab");
        spec.setContent(R.id.tab3);
        spec.setIndicator("KAMASUTRA", res.getDrawable(android.R.drawable.ic_dialog_map));
        tabs.addTab(spec);
        tabs.setCurrentTab(0);

        configurarTab1();
        configurarTab2();
        configurarTab3();

    }
    private void configurarTab1(){ //Imagenes de fondo
        fondo1 = new ImageView(this);
        fondo2 = new ImageView(this);
        fondo3 = new ImageView(this);
        fondo4 = new ImageView(this);
        fondo5 = new ImageView(this);
        fondo6 = new ImageView(this);
        fondo7 = new ImageView(this);
        fondo8 = new ImageView(this);
        fondo9 = new ImageView(this);
        fondo10 = new ImageView(this);
        fondo11 = new ImageView(this);/*
        //fondo12 = new ImageView(this);*/


        fondo1.setImageResource(R.drawable.comic_p2);
        fondo2.setImageResource(R.drawable.comic_p1);
        fondo3.setImageResource(R.drawable.comic_p3);
        fondo4.setImageResource(R.drawable.comic_p5);
        fondo5.setImageResource(R.drawable.comic_p7);
        fondo6.setImageResource(R.drawable.comic_p9);
        fondo7.setImageResource(R.drawable.comic_p8);
        fondo8.setImageResource(R.drawable.comic_p6);
        fondo9.setImageResource(R.drawable.comic_p4);
        fondo10.setImageResource(R.drawable.comic_p10);
        fondo11.setImageResource(R.drawable.comic_p11);/*
        //fondo12.setImageResource(R.drawable.plantilla12);*/

        //fondo1.setMaxWidth(380);
        //fondo2.setMaxWidth(380);

        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        int ancho = dm.widthPixels;
        int alto = dm.heightPixels;



        //fondo1.setScaleType(ImageView.ScaleType.CENTER_CROP);
        fondo1.setLayoutParams(new ViewGroup.LayoutParams(ancho,alto));
        fondo2.setLayoutParams(new ViewGroup.LayoutParams(ancho,alto));
        fondo3.setLayoutParams(new ViewGroup.LayoutParams(ancho,alto));
        fondo4.setLayoutParams(new ViewGroup.LayoutParams(ancho,alto));
        fondo5.setLayoutParams(new ViewGroup.LayoutParams(ancho,alto));
        fondo6.setLayoutParams(new ViewGroup.LayoutParams(ancho,alto));
        fondo7.setLayoutParams(new ViewGroup.LayoutParams(ancho,alto));
        fondo8.setLayoutParams(new ViewGroup.LayoutParams(ancho,alto));
        fondo9.setLayoutParams(new ViewGroup.LayoutParams(ancho,alto));
        fondo10.setLayoutParams(new ViewGroup.LayoutParams(ancho,alto));
        fondo11.setLayoutParams(new ViewGroup.LayoutParams(ancho,alto));
        //fondo12.setLayoutParams(new ViewGroup.LayoutParams(ancho,alto));


        fondo1.setMaxWidth(ancho);
        fondo1.setMaxHeight(alto);
        fondo1.setY(-170);
        fondo2.setMaxWidth(ancho);
        fondo2.setMaxHeight(alto);
        fondo2.setY(-170);
        fondo3.setMaxWidth(ancho);
        fondo3.setMaxHeight(alto);
        fondo3.setY(-170);
        fondo4.setMaxWidth(ancho);
        fondo4.setMaxHeight(alto);
        fondo4.setY(-170);
        fondo5.setMaxWidth(ancho);
        fondo5.setMaxHeight(alto);
        fondo5.setY(-170);
        fondo6.setMaxWidth(ancho);
        fondo6.setMaxHeight(alto);
        fondo6.setY(-170);
        fondo7.setMaxWidth(ancho);
        fondo7.setMaxHeight(alto);
        fondo7.setY(-170);
        fondo8.setMaxWidth(ancho);
        fondo8.setMaxHeight(alto);
        fondo8.setY(-170);
        fondo9.setMaxWidth(ancho);
        fondo9.setMaxHeight(alto);
        fondo9.setY(-170);
        fondo10.setMaxWidth(ancho);
        fondo10.setMaxHeight(alto);
        fondo10.setY(-170);
        fondo11.setMaxWidth(ancho);
        fondo11.setMaxHeight(alto);
        fondo11.setY(-170);
        /*fondo12.setMaxWidth(ancho);
        fondo12.setMaxHeight(alto);
        fondo12.setY(-170);*/


        myGallery = (LinearLayout)findViewById(R.id.galeria);
        myGallery.addView(fondo1);
        myGallery.addView(fondo2);
        myGallery.addView(fondo3);
        myGallery.addView(fondo4);
        myGallery.addView(fondo5);
        myGallery.addView(fondo6);
        myGallery.addView(fondo7);
        myGallery.addView(fondo8);
        myGallery.addView(fondo9);
        myGallery.addView(fondo10);
        myGallery.addView(fondo11);/*
        myGallery.addView(fondo12);*/


    }
    private void configurarTab2(){ //Jugar
        btImgPostura = (Button) findViewById(R.id.bt_imgPostura);
        btProbar = (Button) findViewById(R.id.bt_probar);
        txtPostura = (TextView) findViewById(R.id.txt_postura);
        btImgPostura.setOnClickListener(this);
        btProbar.setOnClickListener(this);
        obtenerPosturaNueva();
    }
    private void configurarTab3(){
        gvPosturas = (GridView) findViewById(R.id.gvPosturas);
        gvPosturas.setAdapter(new ImageAdapter(this));
        gvPosturas.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                                              public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                                                  Intent intent = new Intent(principalActivity.this, kamasutraActivity.class);
                                                  intent.putExtra("id_postura",Integer.toString(position+1));
                                                  intent.putExtra("id",id_usuario);
                                                  intent.putExtra("estado",estado);
                                                  startActivity(intent);
                                              }
                                          }
        );
    }

    @Override
    public void onClick(View v) {
        Intent intent;
        intent = new Intent();

        switch (v.getId()) {

            //Botones para el natvar
            case R.id.btFormularioNV:
                intent.setClass(this,indexFormularios.class);
                intent.putExtra("id",id_usuario);
                intent.putExtra("estado",estado);
                startActivity(intent);
                break;
            case R.id.btSugerenciaNV:
                intent.setClass(this,indexSugerencias.class);
                intent.putExtra("id",id_usuario);
                intent.putExtra("estado",estado);
                startActivity(intent);
                break;
            case R.id.btOpcionesNV:
                intent.setClass(this,menuActivity.class);
                intent.putExtra("id",id_usuario);
                intent.putExtra("estado",estado);
                startActivity(intent);
                break;
            case R.id.bt_atras:
                finish();
                break;
            case R.id.btLogoNV:
                finish();
                break;
            case R.id.bt_sincronizar:
                 sincronizar();
                 break;
            //Tab jugar
            case R.id.bt_imgPostura:
                intent = intent.setClass(principalActivity.this,kamasutraActivity.class);
                intent.putExtra("id_postura",Integer.toString(id_postura));
                intent.putExtra("id",id_usuario);
                intent.putExtra("estado",estado);
                startActivity(intent);
                break;
            case R.id.bt_probar:
                obtenerPosturaNueva();
                break;
        }
    }

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    private void obtenerPosturaNueva(){
        int num;

        num = db.ObtenerNumPosturas();
        Random numRand = new Random();
        //numRand.setSeed(2);

        id_postura = numRand.nextInt(num)+1;
        //String numS = String.valueOf(numR);
        Cursor cursor = db.ObtenerKamasutraPostura(Integer.toString(id_postura));

        if (cursor.moveToFirst()) {
            cursor.moveToFirst();
            //Posición de la columna del cursor
            int numNombre = cursor.getColumnIndex("nombre_postura");
            int numImagen = cursor.getColumnIndex("imagen");

            //Extrae la información de la columna del cursor

            String nom = cursor.getString(numNombre);
            String nombreImagen = cursor.getString(numImagen);

            //Extrae el nombre de la imagen sin la extensión
            int pos = nombreImagen.length()-4;
            nombreImagen = nombreImagen.substring(0,pos);

            //Añade los textos a los labels del layout
            txtPostura.setText(nom);

            //Añade la imagen de la postura al ImageView
            Drawable imagen;
            int idimagen=getResources().getIdentifier(nombreImagen,"drawable","com.play2gether");
            //int idimagen=getResources().getIdentifier("medusa","drawable","com.play2gether");
            imagen = getResources().getDrawable(idimagen);
            btImgPostura.setBackground(imagen);
            btImgPostura.setOnClickListener(this);
        }
    }
    public void sincronizar(){
        Sincronizar sinc = new Sincronizar(id_usuario,this);
        sinc.sincronizar();
    };
}
